// 等差数列划分法
class Solution {
    public:
        int numberOfArithmeticSlices(vector<int>& nums) {
            int n = nums.size();
            if(n < 3) return 0;
            //dp[i]表示以i为结尾最大的子数组个数
            vector<int> dp(n);
            for(int i = 2; i < n; i++)
            {
                if(nums[i]+nums[i-2] == 2 * nums[i-1])
                {
                    dp[i] = dp[i-1] + 1;
                }
                else
                {
                    dp[i] = 0;
                }
            }
            int ret = 0;
            for(int i = 0; i < n; i++)
            {
                ret += dp[i];
            }        
            return ret;
        }
    };